package com.ilxqx.framework.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 数据库工具类
 * @author venus
 */
@Slf4j
@Component
public final class DbUtils {

    /**
     * 数据库操作模板类
     */
    private static JdbcTemplate jdbcTemplate;

    @Autowired
    public DbUtils(JdbcTemplate jdbcTemplate) {
        DbUtils.jdbcTemplate = jdbcTemplate;
    }

    /**
     * 获取jdbc模板
     * @return jdbcTemplate
     */
    public static JdbcTemplate getJdbcTemplate() {
        return DbUtils.jdbcTemplate;
    }

    /**
     * 执行查询sql
     * @param sql SQL语句
     * @param args 绑定参数
     * @return 执行结果
     */
    public static List<Map<String, Object>> query(String sql, Object... args) {
        return DbUtils.jdbcTemplate.queryForList(sql, args);
    }

    /**
     * 执行查询sql
     * @param sql sql语句
     * @param cls 类类型
     * @param args 绑定参数
     * @param <T> 泛型
     * @return list数据
     */
    public static <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) {
        return DbUtils.jdbcTemplate.query(sql, rowMapper, args);
    }

}
